home *** CD-ROM | disk | FTP | other *** search
/ Champak 141 / (Vol 141) Oct 17 2011.iso / Games / flight-of-the-museum.swf / scripts / engine / dynamicObjects / GoalRing.as < prev    next >
Encoding:
Text File  |  2011-10-17  |  4.5 KB  |  186 lines

  1. package engine.dynamicObjects
  2. {
  3.    import engine.BitmapLibrary;
  4.    import engine.WorldScene;
  5.    
  6.    public class GoalRing extends DynamicObject
  7.    {
  8.        
  9.       
  10.       private var _collisionTimer:Number = 0;
  11.       
  12.       private var _flyThroughTimer:Number = 0;
  13.       
  14.       private var sinSeed:Number;
  15.       
  16.       private var _fg:GoalRing_FG;
  17.       
  18.       private var _flyThrough:Number = 0;
  19.       
  20.       private var _rMotion:Number = 0;
  21.       
  22.       private var sinFreq:Number = 0.05;
  23.       
  24.       public var rOffset:Number = 0;
  25.       
  26.       private var _collision:Boolean = false;
  27.       
  28.       private var sinAmp:Number = 0.05;
  29.       
  30.       private var _collected:Boolean = false;
  31.       
  32.       private var sin:Number = 0;
  33.       
  34.       private var _hasCollided:Boolean = false;
  35.       
  36.       private var _bg:GoalRing_BG;
  37.       
  38.       private var _cFrame:Number = 1;
  39.       
  40.       public function GoalRing()
  41.       {
  42.          sin = 0;
  43.          sinAmp = 0.05;
  44.          sinSeed = Math.random() * 2;
  45.          sinFreq = 0.05;
  46.          _rMotion = 0;
  47.          _collision = false;
  48.          _hasCollided = false;
  49.          _collisionTimer = 0;
  50.          _collected = false;
  51.          _flyThrough = 0;
  52.          _flyThroughTimer = 0;
  53.          rOffset = 0;
  54.          _cFrame = 1;
  55.          super(BitmapLibrary.Stills.DYN_Invis);
  56.          _objectType = OBJ_TYPES.GP;
  57.          _drawMethod = DMETHOD.Slow;
  58.          _persistent = true;
  59.          solid = true;
  60.          z = 1.75;
  61.          s = 2.75;
  62.          hitW = 55;
  63.          hitH = 55;
  64.          colOffsetY = -20;
  65.          _bg = new GoalRing_BG();
  66.          _bg.x = x;
  67.          _bg.y = y;
  68.          _bg.z = z;
  69.          _bg.s = s;
  70.          _bg.parentRing = this;
  71.          WorldScene.Instance.addGPObjectAt(_bg,0);
  72.          _fg = new GoalRing_FG();
  73.          _fg.x = x;
  74.          _fg.y = y;
  75.          _fg.z = z;
  76.          _fg.s = s;
  77.          _fg.parentRing = this;
  78.          WorldScene.Instance.addGPObject(_fg);
  79.       }
  80.       
  81.       public function set SinAmp(val:Number) : *
  82.       {
  83.          sinAmp = val;
  84.       }
  85.       
  86.       public function flyThrough() : *
  87.       {
  88.          ++_flyThrough;
  89.          _flyThroughTimer = _flyThrough;
  90.       }
  91.       
  92.       public function get Collected() : *
  93.       {
  94.          return _collected;
  95.       }
  96.       
  97.       public function get Collision() : *
  98.       {
  99.          return _collision;
  100.       }
  101.       
  102.       public function collide(side:String, dir:Number) : *
  103.       {
  104.          if(!_collision)
  105.          {
  106.             _collision = true;
  107.             _collisionTimer = 25;
  108.             _flyThrough = 0;
  109.             _flyThroughTimer = 0;
  110.             switch(side)
  111.             {
  112.                case "fg":
  113.                   _hasCollided = true;
  114.                   if(dir > r - 1.57 && dir < r + 1.57)
  115.                   {
  116.                      _rMotion = 4;
  117.                   }
  118.                   else
  119.                   {
  120.                      _rMotion = -4;
  121.                   }
  122.                   break;
  123.                case "bg":
  124.                   _hasCollided = true;
  125.                   if(dir > r - 1.57 && dir < r + 1.57)
  126.                   {
  127.                      _rMotion = -4;
  128.                   }
  129.                   else
  130.                   {
  131.                      _rMotion = 4;
  132.                   }
  133.             }
  134.          }
  135.       }
  136.       
  137.       override public function fStep() : *
  138.       {
  139.          super.fStep();
  140.          --_collisionTimer;
  141.          if(_collisionTimer < 0)
  142.          {
  143.             _collision = false;
  144.          }
  145.          if(_flyThrough > 0)
  146.          {
  147.             _flyThroughTimer += _flyThrough;
  148.          }
  149.          if(_flyThroughTimer > 30 && !_collected)
  150.          {
  151.             playAnim();
  152.             WorldScene.Instance.addRingScore(this);
  153.             Main.Instance.playSound("pickup");
  154.             _collected = true;
  155.          }
  156.          sinSeed += sinFreq;
  157.          sin = Math.sin(sinSeed) * sinAmp;
  158.          vx = sin * 10;
  159.          vy = sin * 35;
  160.          r = rOffset + sin * 5 + _rMotion;
  161.          if(_fg.destroyed && _bg.destroyed)
  162.          {
  163.             destroy();
  164.          }
  165.          _rMotion *= 0.95;
  166.          _bg.x = x;
  167.          _bg.y = y;
  168.          _bg.r = r;
  169.          _fg.x = x;
  170.          _fg.y = y;
  171.          _fg.r = r;
  172.       }
  173.       
  174.       override public function playAnim() : *
  175.       {
  176.          _fg.playAnim();
  177.          _bg.playAnim();
  178.       }
  179.       
  180.       public function get HasCollided() : *
  181.       {
  182.          return _hasCollided;
  183.       }
  184.    }
  185. }
  186.